import { ref, computed } from 'vue'
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  // 所有可能的路由列表
  const allRoutes = [
    {
      id: 0,
      name: '工作台',
      router: '/work',
      img: '/6.png',
      nameA: '工作台',
      title: '工作台',
      type: '0',
      roles: ['CEO', 'HR', '员工', 'ADMIN', 'employee', 'staff', 'worker', '普通员工'] // 所有角色都可访问
    },
    {
      id: 23,
      name: '员工管理',
      router: '/staff',
      img: '/员工.png',
      nameA: '员工管理',
      entry: '//localhost:5555', // 子应用地址
      title: '员工管理',
      type: '33',
      roles: ['CEO', 'HR', 'ADMIN', '人事', '行政'] // CEO、HR和行政可访问
    },
    {
      id: 1,
      name: '部门管理',
      router: '/organization',
      img: '/7.png',
      nameA: '部门管理',
      title: '部门管理',
      entry: '//localhost:6969', // 子应用地址
      type: '1',
      roles: ['CEO', 'HR', 'ADMIN', '人事', '行政'] // CEO、HR和行政可访问
    },
    {
      id: 2,
      name: '行政管理',
      router: '/administration',
      img: '/8.png',
      nameA: '行政管理',
      title: '行政管理',
      entry: '//172.20.10.5:8082', // 子应用地址
      type: '2',
      roles: ['CEO', 'ADMIN', '行政部'] // CEO和行政可访问
    },
    {
      id: 4,
      name: '财务管理',
      router: '/finance',
      img: '/财务.png',
      nameA: '财务管理',
      entry: '//localhost:7070', // 子应用地址
      type: '4',
      roles: ['CEO', 'HR', '人事'] // CEO和HR可访问
    },
    {
      id: 5,
      name: '流程审批',
      router: '/process',
      img: '/流程.png',
      nameA: '流程审批',
      entry: '//localhost:7071', // 子应用地址
      type: '5',
      roles: ['CEO', 'HR', '员工', 'ADMIN', 'employee', 'staff', 'worker', '普通员工', '人事', '行政部'] // 所有角色都可访问
    },
    {
      id: 6,
      name: '考勤管理',
      router: '/react',
      img: '/9.png',
      nameA: '考勤管理',
      entry: '//localhost:8082', // 子应用地址
      type: '6',
      roles: ['CEO', 'HR', '人事'] // CEO和HR可访问
    },
  ]

  // 当前用户可访问的路由列表
  const routerList = ref([...allRoutes])

  // 根据用户角色过滤路由
  const filterRoutesByRole = (role: string) => {
    console.log("过滤路由，用户角色:", role);
    
    // 如果是CEO，可以访问所有路由
    if (role === 'CEO') {
      console.log("CEO角,显示所有路由");
      routerList.value = [...allRoutes];
      return;
    }
    
    // 如果是员工角色，显示工作台和流程审批
    if (role === '员工') {
      console.log("员工角色，显示工作台和流程审批");
      routerList.value = allRoutes.filter(route => 
        route.router === '/work' || route.router === '/process'
      );
      return;
    }
    
    // 如果是行政部角色，显示工作台、行政管理、员工管理、部门管理和流程审批
    if (role === '行政部') {
      console.log("行政部角色，显示指定路由");
      routerList.value = allRoutes.filter(route => 
        route.router === '/work' || 
        route.router === '/administration' || 
        route.router === '/staff' || 
        route.router === '/organization' || 
        route.router === '/process'
      );
      return;
    }
     // 如果是行政部角色，显示工作台、行政管理、员工管理、部门管理和流程审批
     if (role === 'HR') {
      console.log("人力资源部角色，显示指定路由");
      routerList.value = allRoutes.filter(route => 
        route.router === '/work' || 
        route.router === '/administration' || 
        route.router === '/staff' || 
        route.router === '/organization' || 
        route.router === '/process' ||
        route.router === '/finance'
      );
      return;
    }
    // 如果角色为空，至少显示工作台和流程审批
    if (!role) {
      console.log("角色为空，显示基本路由");
      routerList.value = allRoutes.filter(route => 
        route.router === '/work' || route.router === '/process'
      );
      return;
    }
    
    // 根据角色过滤路由
    const filteredRoutes = allRoutes.filter(route => 
      route.roles && route.roles.includes(role)
    );
    
    console.log("过滤后的路由数量:", filteredRoutes.length);
    console.log("过滤后的路由:", JSON.stringify(filteredRoutes.map(r => r.nameA)));
    
    // 如果过滤后没有路由，至少显示工作台
    if (filteredRoutes.length === 0) {
      console.log("过滤后没有路由，显示工作台");
      routerList.value = allRoutes.filter(route => route.router === '/work');
    } else {
      routerList.value = filteredRoutes;
    }
  }

  return { routerList, filterRoutesByRole }
})
